import { get, post, put, del } from '../utils/request.js'
import config from '../config/index.js'

/**
 * 短信相关API
 */
export const smsApi = {
  /**
   * 发送短信验证码
   * @param {Object} params 短信参数
   * @param {string} params.phone 手机号
   */
  sendCode: (params) => {
    return get(`/resource/sms/code`, params)
  },
  
  /**
   * 验证短信验证码
   * @param {Object} data 短信参数
   * @param {string} data.phone 手机号
   * @param {string} data.code 验证码
   */
  verifyCode: (data) => {
    return post(`/verify`, data)
  }
}



/**
 * 用户相关API
 */
export const userApi = {
  /**
   * 用户登录
   * @param {Object} data 登录参数
   * @param {string} data.username 用户名
   * @param {string} data.password 密码
   */
  login: (data) => {
    return post(`${config.api.auth}/login`, data)
  },
  
  /**
   * 用户注册
   * @param {Object} data 注册参数
   */
  register: (data) => {
    return post(`${config.api.auth}/register`, data)
  },
  
  
  /**
   * 获取用户信息
   */
  getUserInfo: () => {
    return get(`${config.api.user}/info`)
  },
  
  /**
   * 更新用户信息
   * @param {string} userId 用户ID
   * @param {Object} data 用户信息
   */
  updateUserInfo: (userId, data) => {
    return put(`${config.api.user}/${userId}`, data)
  },
}

/**
 * 商品相关API
 */
export const productApi = {
  /**
   * 获取商品列表
   * @param {Object} params 查询参数
   */
  getProductList: (params) => {
    return get(`${config.api.product}`, params)
  },
  
  /**
   * 获取商品详情
   * @param {string} productId 商品ID
   */
  getProductDetail: (productId) => {
    return get(`${config.api.product}/${productId}`)
  },
  
  /**
   * 搜索商品
   * @param {Object} params 搜索参数
   */
  searchProducts: (params) => {
    return get(`${config.api.product}/search`, params)
  }
}

/**
 * 订单相关API
 */
export const orderApi = {
  /**
   * 创建订单
   * @param {Object} data 订单数据
   */
  createOrder: (data) => {
    return post(`${config.api.order}`, data)
  },
  
  /**
   * 获取订单列表
   * @param {Object} params 查询参数
   */
  getOrderList: (params) => {
    return get(`${config.api.order}`, params)
  },
  
  /**
   * 获取订单详情
   * @param {string} orderId 订单ID
   */
  getOrderDetail: (orderId) => {
    return get(`${config.api.order}/${orderId}`)
  },
  
  /**
   * 取消订单
   * @param {string} orderId 订单ID
   */
  cancelOrder: (orderId) => {
    return put(`${config.api.order}/${orderId}/cancel`)
  }
}

/**
 * 地址相关API
 */
export const addressApi = {
  /**
   * 获取地址列表
   */
  getAddressList: () => {
    return get(`${config.api.address}`)
  },
  
  /**
   * 获取地址详情
   * @param {string} addressId 地址ID
   */
  getAddressDetail: (addressId) => {
    return get(`${config.api.address}/${addressId}`)
  },
  
  /**
   * 添加地址
   * @param {Object} data 地址数据
   */
  addAddress: (data) => {
    return post(`${config.api.address}`, data)
  },
  
  /**
   * 更新地址
   * @param {string} addressId 地址ID
   * @param {Object} data 地址数据
   */
  updateAddress: (addressId, data) => {
    return put(`${config.api.address}/${addressId}`, data)
  },
  
  /**
   * 删除地址
   * @param {string} addressId 地址ID
   */
  deleteAddress: (addressId) => {
    return del(`${config.api.address}/${addressId}`)
  },
  
  /**
   * 设置默认地址
   * @param {string} addressId 地址ID
   */
  setDefaultAddress: (addressId) => {
    return put(`${config.api.address}/${addressId}/default`)
  }
}

/**
 * 优惠券相关API
 */
export const couponApi = {
  /**
   * 获取优惠券列表
   * @param {Object} params 查询参数
   * @param {string} params.status 优惠券状态：available-可使用，used-已使用，expired-已过期
   * @param {number} params.page 页码
   * @param {number} params.size 每页数量
   */
  getCouponList: (params) => {
    return get(`${config.api.coupon}`, params)
  },
  
  /**
   * 获取优惠券详情
   * @param {string} couponId 优惠券ID
   */
  getCouponDetail: (couponId) => {
    return get(`${config.api.coupon}/${couponId}`)
  },
  
  /**
   * 领取优惠券
   * @param {string} couponId 优惠券ID
   */
  receiveCoupon: (couponId) => {
    return post(`${config.api.coupon}/${couponId}/receive`)
  },
  
  /**
   * 使用优惠券
   * @param {string} couponId 优惠券ID
   * @param {string} orderId 订单ID
   */
  useCoupon: (couponId, orderId) => {
    return post(`${config.api.coupon}/${couponId}/use`, { orderId })
  },
  
  /**
   * 获取可用优惠券列表（用于下单时选择）
   * @param {Object} params 查询参数
   * @param {number} params.amount 订单金额
   * @param {Array} params.productIds 商品ID列表
   */
  getAvailableCoupons: (params) => {
    return get(`${config.api.coupon}/available`, params)
  }
}